// 
function compareLessThanOrEquals(x, y) {
    if (x < y) return -1;
    if (x > y) return 1;
    return 0;
}

function lessOrEquals(x, y) {
    return x <= y;
}

// 定义 existy 函数简化 JavaScript 中对象是否存在的判断
function existy(x) {
    // 使用松散运算符 != 可以区分 null, undefined 和 其他所有对象
    return x != null;
}

function truthy(x) {
    return (x !== false) && existy(x);
}

// 使用高阶函数包装比较器
function comparator(pred) {
    return function(x, y) {
        if (truthy(pred(x, y))) 
            return -1;
        else if (truthy(pred(y, x))) 
            return 1;
        else 
            return 0;
    }
}

// 数组排序，指定排序规则
var result = [2, 3, -1, -6, 0, -108, 42, 10].sort(comparator(lessOrEquals));
console.log(result);